As a connection-oriented communication protocol to establish a session and execute communication between nodes, Transmission Control Protocol (TCP) is known. TCP is a transport layer communication protocol in an OSI reference model, and its basic specification is specified in RFC 793 of IETF.
A session of TCP is managed by port number, and is associated with a higher-level application. Upon transmission of byte data received from the higher-level application, a transmitting node notifies an offset of byte data contained in a transmission packet with a sequence number. A receiving node that has received the packet puts an offset of byte data desired to be transmitted next in an acknowledgement number of an acknowledgement packet (ACK) to send to the transmitting node and accordingly informs the transmitting node of the receipt of the byte data up to the acknowledgement number. The transmitting node understands how much of the data has arrived by receiving an ACK packet, and retransmits a data packet that has been transmitted but not yet arrived; accordingly, the reachability of data is guaranteed.
TCP controls a transmission rate by window management to prevent data from being dropped since the process of the receiving node does not catch up, and maintain fairness to another communication. The window sizes managed by TCP include a receive window size and a congestion window size. The receiving node advertises a receive window size to the transmitting node in a window field of a TCP header, the receive window size indicating the free space of a receiving buffer of the receiving node. The transmitting node manages a congestion window size that indicates the estimated amount of data that the transmitting node can transmit without causing congestion. The transmitting node limits the amount of data to be transmitted based on a smaller value of these window sizes.
TCP congestion control using the congestion window is specified in IETF RFC 2581. The transmitting node increases the congestion window size whenever receiving an ACK while executing congestion control to suppress the transmission rate by reducing the congestion window size if detecting congestion on a path. For example, if redundantly receiving an ACK to the same segment three times, the transmitting node assumes that packet loss has occurred due to congestion, and reduces the congestion window size. Similarly, if a retransmission timeout (RTO) occurs while no ACK has been received for a fixed period of time, the transmitting node sets the congestion window size to a minimum. After reducing the congestion window size, the transmitting node gradually expands the congestion window size with the passage of time.
A technology for storing a congestion window size before congestion detection in advance and, not gradually returning the congestion window size after congestion detection but immediately returning to the stored congestion window size if congestion is removed, has also recently been known.
Patent Document 1: Japanese Laid-open Patent Publication No. 2006-303925
Patent Document 2: Japanese Laid-open Patent Publication No. 2004-165817
Patent Document 3: Japanese Laid-open Patent Publication No. 2002-135330
Patent Document 4: Japanese Laid-open Patent Publication No. 2011-015288
However, the congestion control of the known technologies has a problem that the throughput that is originally supposed to be obtainable is not obtained after congestion detection in some cases.
Generally, the optimum value of the TCP window size is the bandwidth-delay product expressed in the product of a network bandwidth and a round-trip time. In order to promote fairness to another session and optimize the entire network, a transmitting node executes congestion avoidance control such that the congestion window size is brought close to the bandwidth-delay product in individual sessions.
In the known technologies, if packet loss occurs as congestion detection, the congestion window size is reduced to execute congestion control. However, the path may be switched after congestion is detected. In this case, if the path changes, the round-trip time and the bandwidth also change and the optimum value of the congestion window size expressed in the bandwidth-delay product also increases or decreases. In other words, in the known technologies, the congestion window size is controlled to return to an optimum value for the path where congestion has occurred after congestion detection; accordingly, the throughput that is originally supposed to be obtainable is not necessarily obtained.